package cn.com.bluemoon.daps.standard.entity;

import cn.com.bluemoon.daps.common.domain.BaseModel;
import cn.com.bluemoon.daps.common.enums.StandardAuditStatus;
import cn.com.bluemoon.daps.standard.vo.BasicStandardAndDicVo;
import cn.com.bluemoon.daps.standard.vo.IndexStandardVo;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * <p>
 * 数据标准的核心表，记录各标准的版本和审核状态
 * </p>
 *
 * @author admin
 * @since 2020-08-07
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors
@ApiModel(value = "DapStandardAuditVersionMain", description = "数据标准的核心表，记录各标准的版本和审核状态")
public class DapStandardAuditVersionMain extends BaseModel<DapStandardAuditVersionMain> {

    private static final long serialVersionUID = 1L;

    /**
     * <strong>需要考虑动作和状态</strong>
     *
     * <lo>
     * <li>操作动作：
     * </br>操作人：发起审批（任务状态调整为待审批），撤销（针对自己发起审批的单子进行撤销，状态调整为操作）
     * </br>审核人：通过（任务状态调整为已发布）、不通过（任务状态调整为不通过，返回给操作人） </li>
     * <li>针对状态来说，操作人有：草稿、待审批、已发布、不通过</li>
     * <li>针对审核人来说，已发布（通过为动作）、待审批、<strong>没有不通过的状态数据</strong></li>
     * </lo>
     */
    @EnumValue
    @ApiModelProperty(value = "审核状态： 草稿(0),    待审批(1),    已退回(2),    已发布(3);")
    private StandardAuditStatus auditStatus;

    @ApiModelProperty(value = "新增（1） 变更(2) 删除(3)")
    private Integer modifyType;

    @ApiModelProperty(value = "父id")
    private String pid;

    @ApiModelProperty(value = "版本号,考虑到查询中直接查询每个标准的最新版本+已发布的数据")
    private Integer version;

    @ApiModelProperty(value = "每个版本对应的标准id")
    private String standardId;

    @ApiModelProperty(value = "标准数据的唯一标识，多版本中唯一，不会由于多版本而发现变化")
    private String standardUniqueId;

    @ApiModelProperty(value = "标准类型 0 基础标准 1 指标标准")
    private Integer standardType;

    /**
     * 基础标准中的字典信息i
     */
    @TableField(exist = false)
    private BasicStandardAndDicVo basicStandardAndDicVo;


    @TableField(exist = false)
    private IndexStandardVo standardIndexVo;

    /**
     * 叶子数据
     */
    @TableField(exist = false)
    private List<DapStandardAuditVersionMain> children;


}
